package com.hrm.common.controller;

import com.hrm.domain.system.response.ProfileResult;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.PrincipalCollection;
import org.apache.shiro.subject.Subject;
import org.springframework.web.bind.annotation.ModelAttribute;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @Author: 林海湾Sea
 * @Date :  2021/11/22 20:40
 * @Decription:
 *
 * 公共Controller
 *      获取request，response
 *      获取企业id,获取企业名称
 */
public class BaseController {

    protected HttpServletRequest request;
    protected HttpServletResponse response;
    protected String companyId;
    protected String companyName;
    protected String userId;

    /**
     * 使用Shiro获取
     * @ModelAttribute注释：是在在controller中，执行方法之前先执行该方法
     * @param request
     * @param response
     */
    @ModelAttribute
    public void setReqAndResp(HttpServletRequest request, HttpServletResponse response) {
        this.request = request;
        this.response = response;
//        /**
//         * 目前使用 companyId = 1
//         *         companyName = "公司1号";
//         */
//        this.companyId = "1";
//        this.companyName = "公司1号";

        // 获取session中的安全数据
        Subject subject = SecurityUtils.getSubject();
        // subject获取所有的安全集合
        PrincipalCollection principals = subject.getPrincipals();
        if (principals != null && !principals.isEmpty()) {
            // 获取安全数据
            ProfileResult result = (ProfileResult) principals.getPrimaryPrincipal();
            this.companyId = result.getCompanyId();
            this.companyName = result.getCompany();
            this.userId = result.getUserId();
        }
    }
}
